home *** CD-ROM | disk | FTP | other *** search
- unit fdiary;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, HTTPApp, Db, DBTables;
-
- type
- TWebModule1 = class(TWebModule)
- ppDiary: TPageProducer;
- Table1: TTable;
- procedure HandleEntry(Sender: TObject; Request: TWebRequest;
- Response: TWebResponse; var Handled: Boolean);
- procedure AddUser(Sender: TObject; Request: TWebRequest;
- Response: TWebResponse; var Handled: Boolean);
- procedure ppDiaryHTMLTag(Sender: TObject; Tag: TTag;
- const TagString: String; TagParams: TStrings;
- var ReplaceText: String);
- private
- { Private declarations }
- FDate: TDatetime;
- FUserName, FEntry: string;
- FUserID: integer;
- public
- { Public declarations }
- end;
-
- var
- WebModule1: TWebModule1;
-
- implementation
-
- {$R *.DFM}
-
- procedure TWebModule1.HandleEntry(Sender: TObject; Request: TWebRequest;
- Response: TWebResponse; var Handled: Boolean);
- const FILENAME: string = 'c:\program files\borland\delphi 3\web\newuser.htm';
- begin
- // check if the cookies have been sent - if they have, then present the
- // form to the surfer otherwise get the surfer to sign up for the diary
-
- with Request do
- begin
- fusername := CookieFields.Values['username'];
- if FUserName <> EmptyStr then
- fuserid := StrToInt(CookieFields.Values['userid'])
- else fuserid := 0;
- end;
-
- if (fusername = EmptyStr) or (fuserid <= 0) or
- (Request.QueryFields.Values['deluser'] <> EmptyStr) then
- Response.ContentStream := TFileStream.Create(FILENAME, fmOpenRead)
- else with Request, Table1 do
- begin
- if QueryFields.Values['send'] <> EmptyStr then
- begin
- fdate := StrToDate(QueryFields.Values['adate']);
- messagebeep($ffffffff);
- if not Table1.FindKey([fuserid, fdate]) then
- begin
- Insert;
- FieldByName('userid').AsInteger := fuserid;
- FieldByName('username').AsString := fusername;
- FieldByName('date').AsDateTime := fdate;
- end else Edit;
- FEntry := QueryFields.Values['donetoday'];
- FieldByName('Entry').AsString := FEntry;
- Post;
- Response.Content := ppDiary.Content;
- end
- else if QueryFields.Values['getdate'] <> EmptyStr then
- begin
- fdate := StrToDate(QueryFields.Values['adate']);
- if not Table1.FindKey([fuserid, fdate]) then
- begin
- Response.Content := '<H2>Sorry ' + fusername + ' the date ' +
- DateToStr(fdate) + ' isn''t in your diary</H2>';
- Exit;
- end;
- FDate := FieldByName('Date').AsDateTime;
- FEntry := FieldByName('Entry').AsString;
- Response.Content := ppDiary.Content;
- end else Response.Content := ppDiary.Content;
- end;
- end;
-
- procedure TWebModule1.AddUser(Sender: TObject; Request: TWebRequest;
- Response: TWebResponse; var Handled: Boolean);
- var TheCookies: TStringList;
- begin
- with Request do
- try
- FUserID := GetTickCount;
- FUserName := QueryFields.Values['username'];
- FEntry := 'Enter the day''s details here';
- FDate := now;
-
- TheCookies := nil;
- TheCookies := TStringList.Create;
- TheCookies.Add('username=' + fusername);
- TheCookies.Add('userid=' + IntToStr(fuserid));
-
- Response.SetCookieField(TheCookies, '', '/', EncodeDate(1999, 12, 31), False);
- Response.Content := ppDiary.Content;
- finally
- TheCookies.Free;
- end
- end;
-
- procedure TWebModule1.ppDiaryHTMLTag(Sender: TObject; Tag: TTag;
- const TagString: String; TagParams: TStrings; var ReplaceText: String);
- begin
- if CompareText(TagString, 'DIARYDATE') = 0 then
- ReplaceText := DateToStr(FDate)
- else
- if CompareText(TagString, 'DIARYENTRY') = 0 then
- ReplaceText := FEntry
- else
- if CompareText(TagString, 'DIARYTODAY') = 0 then
- ReplaceText := DateToStr(now)
- else
- if CompareText(TagString, 'DIARYNAME') = 0 then
- ReplaceText := FUserName;
- end;
-
- end.
-